
import { SlotAssignment, Static } from "./types";

/**
 * 提供一个相对位置的配置表,队伍模式.例如4人小队。同时，还需要限定槽位的角色
 *  oo
 *  nn
*/
export abstract class FormationPattern<T extends Charactor>
{
    // 当角色在给定的槽位集合 中时，计算飘逸偏移量
    public abstract getDriftOffset(slotAssignments:SlotAssignment<T>[]):Static
 
    // 获取质心的偏移点
    public abstract getOffset():IFVector2
    // 获取槽 在队形中的相对位置
    public abstract getSlotLocation(slotNumber:number):IFVector2
    public abstract  getSlotLocations( ):Readonly<IFVector2>[]
    public abstract getDirection():IFVector2

    // 如果该图案能支持给定的数量的槽位，则返回true
    public abstract supportSlots(slotCount:number):boolean

    public abstract getSlotCost(slot:SlotAssignment<T>):number
    
    public abstract getSlotCount():number

    public abstract getRotateIndex():number[]|false
}
